//
//  StatusListViewModel.swift
//  ydy_weibo
//
//  Created by 杨德勇 on 16/7/19.
//  Copyright © 2016年 杨德勇. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD
import SDWebImage


//这个类专门处理home中的所有网络请求
class StatusListViewModel: NSObject {
    
    
    //MARK:-
    //MARK:加载首页数据
    class func loadData(since_id since_id:Int ,max_id:Int,finished:(array:[Status]?)->()){
        
        let urlString = "2/statuses/home_timeline.json"
        
        guard let token =  UserAccountViewModel().token else{
            SVProgressHUD.showErrorWithStatus("您好，您暂未登陆")
            return
        }
        
        
        //制作请求体
        var parameters = ["access_token":token]
        //若指定此参数，则返回ID比since_id大的微博（即比since_id时间晚的微博），默认为0。
        if since_id > 0 {
            //添加since_id 对应键值
            parameters["since_id"] = "\(since_id)"
        }
        
        //	若指定此参数，则返回ID小于或等于max_id的微博，默认为0。
        if max_id > 0 {
            parameters["max_id"] = "\(max_id - 1)"
        }
        
        //发送网络请求
        NetworkTools.sharedTools.requestJsonDict(.Get, urlstring: urlString, parmaters: parameters) { (result, error) in
            if error != nil{
                //发送错误
                finished(array: nil)
            }
            
            //检查回来的数据是不是字典
            if let array = result!["statuses"] as? [[String:AnyObject]]{
                
                var list = [Status]()
                //字典转模型
                for item in array{
                    let s = Status(dict: item)
                    list.append(s)
                    
                }
                //完成单张图片缓存
                StatusListViewModel.cacheStatusImg(list, finished: finished)
            }
        }
        
        
        
        
        
    }
    //
    //MARK:-
    //MARK:图片缓存
    private class func cacheStatusImg(array:[Status]?,finished:(array:[Status]?)->()){
        if array?.count == 0 {
            finished(array: nil)
            return
        }
        
        let group = dispatch_group_create()
        
        //遍历数组，把每一个status取出
        for s in array! {
            
            if let imageurls = s.pictureURLs {
                
                if imageurls.count != 1 {
                    continue
                }
                
                //这里一定是单张图片
                for url in imageurls {
                    dispatch_group_enter(group)
                    SDWebImageManager.sharedManager().downloadImageWithURL(url, options: [], progress: nil, completed: { (_, _, _, _, _) in
                        print( "图片下载完成")
                        
                        dispatch_group_leave(group)
                    })
                    
                    
                }
            }
        }
        
        
        dispatch_group_notify(group, dispatch_get_main_queue()) { 
            //主线程回调
            print("所有图片加载完成")
            finished(array: array)
        }
        
        
    }



}
